package com.lp.article.service;


import com.lp.article.service.impl.ArticleService;
import com.lp.model.dto.article.*;
import com.lp.model.entity.article.Article;
import com.lp.model.entity.article.ArticleStat;
import com.lp.model.entity.article.vo.ArticleESVO;
import com.lp.model.entity.article.vo.ArticleVO;
import com.lp.model.entity.article.vo.PageVO;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface IArticleService {

    /**
     * 获取最新列表
     * @param pageDto 分页数据
     */
    PageVO<ArticleVO> getNewList(PageDto pageDto);

    /**
     * 发布文章
     * @param article 文章数据
     */
    void publish(Article article);

    /**
     * 获取个人文章列表
     * @param pageDto 分页数据
     */
    PageVO<ArticleVO> getSelfList(PageDto pageDto);

    /**
     * 标记删除文章(普通用户不真正删除)
     * @param id 文章 id
     */
    void markDel(Long id);

    /**
     * 修改文章
     * @param article 修改后的文章数据
     */
    void update(Article article);

    /**
     * 根据文章 id 获取文章内容
     * @param id 文章 id
     * @return
     */
    ArticleVO getInfo(Long id);

    /**
     * 根据用户 id 获取文章统计信息
     * @param userId 用户 id
     */
    List<ArticleStat> getStatByUserId(Long userId);


    /**
     * 为 es 远程调用提供
     * 获取文章 ESVO 信息
     * @param id 文章id
     */
    ArticleESVO getArticleESVO(Long id);

    /**
     * 根据文章 id 获取文章统计信息
     * @param id 文章 id
     */
    ArticleStat getArticleStat(Long id);

}
